import subprocess
import os
import sys

def run_command(command):
    """运行命令并检查是否成功"""
    result = subprocess.run(command, shell=True)
    if result.returncode != 0:
        raise Exception(f"命令失败: {command}")

def main():
    project_dir = os.path.dirname(os.path.abspath(__file__))  # 获取当前脚本所在的目录
    os.chdir(project_dir)  # 切换到项目目录

    # 获取虚拟环境的路径
    venv_path = os.path.join(project_dir, '.venv')  # 根据实际路径调整

    # 安装 PyInstaller（如果未安装）
    run_command("pip install pyinstaller")

    # 生成打包命令
    pyinstaller_command = (
        f"pyinstaller --name dzintergrate --onefile --windowed "
        f"--icon 'icon/app.png' "  # 添加图标文件
        f"--add-data 'icon/app.png:.' "  # 添加窗口图标文件
        f"--add-data 'scripts:./scripts' "  # 添加scripts目录
        f"--add-data 'main_window.ui:.' "
        f"--add-data 'ResourceAnalysis/resouce_statistics.ui:.' "
        f"--add-data 'SocUpdate/soc_update.ui:.' "
        f"--add-data 'ToolchainsUpdate/tools_update.ui:.' "
        f"--add-data 'TrosParser/tros_parser.ui:.' "
        f"--paths {venv_path}/lib/python3.10/site-packages "
        f"--hidden-import 'can.interfaces.socketcan' "
        "main.py"
    )

    # 运行打包命令
    run_command(pyinstaller_command)

    print("打包完成！请在 dist 目录中查找生成的可执行文件。")

if __name__ == "__main__":
    main()
